(deftemplate stanGosposi
	(slot stan)
	(slot zmeczenie)
	(slot zmeczenieMax)
	(slot czasDoZakonczenia)
)

(deftemplate czas
	(slot godzina)
	(slot minuta)
)

(deftemplate stanPokoju
	(slot poziomCzystosci)
)


(deftemplate stanKuchni
	(slot poziomCzystosci)
	(slot iloscSmieci)
	(slot iloscJedzenia)
	(slot iloscNaczyn)
)

(deftemplate stanLazienki
	(slot poziomCzystosci)
	(slot iloscBrudnychRzeczy)
	(slot iloscSrodkowCzystosci)
)

(deftemplate decyzja
	(slot czynnosc)
	(slot cel)
	(multislot args)
)

(deftemplate jaki-posilek
	(slot posilek) ;sniadanie, obiad, kolacja
)
;;;;;;;;;;;;
(defrule czy-stawka-normalna
	(stanGosposi (zmeczenie ?z) (zmeczenieMax ?zm&:(< ?z ?zm )))
	(czas (godzina ?g&:(> ?g 8)&:(< ?g 22)) )
=>
	(assert (czy-stawka-normalna TAK))
)











(defrule czy-PozmywajNaczynia
	(stanKuchni (iloscNaczyn ?ilosc&:(> ?ilosc 30)))
	(czy-stawka-normalna TAK)
=>
	(assert (decyzja (czynnosc ZMYWANIE) ))
)

(defrule czy-WyniesSmieci
	(stanKuchni (iloscSmieci ?ilosc&:(> ?ilosc 40)))
	(czy-stawka-normalna TAK)
=>
	(assert (decyzja (czynnosc SMIECI) ))
)

(defrule czy-ZrobPranie
	(stanLazienki (iloscBrudnychRzeczy ?ilosc&:(> ?ilosc 30)))
	(czy-stawka-normalna TAK)
=>
	(assert (decyzja (czynnosc PRANIE) ))
)
(defrule porzodek-w-pokoju
	(stanPokoju (poziomCzystosci ?wspolczynik&:(< ?wspolczynik 20)))
	(czy-stawka-normalna TAK)
=>
	(assert (decyzja (czynnosc SPRZATANIE) (cel POKOJ)))
)


(defrule porzodek-w-lazience
	(stanLazienki (poziomCzystosci ?wspolczynik&:(< ?wspolczynik 30)))
	(czy-stawka-normalna TAK)
=>
	(assert (decyzja (czynnosc SPRZATANIE) (cel LAZIENKA)))
)

(defrule porzodek-w-kucznia
	(stanKuchni (poziomCzystosci ?wspolczynik&:(< ?wspolczynik 15)))
	(czy-stawka-normalna TAK)
=>
	(assert (decyzja (czynnosc SPRZATANIE) (cel KUCHNIA)))
)

	
(defrule czy-ZrobZakupy
	(stanKuchni (iloscJedzenia ?ilosc&:(< ?ilosc 8)))
=>
	(assert (decyzja (czynnosc ZAKUPY) ))
)

(defrule czy-ZrobZakupy
	(stanLazienki (iloscSrodkowCzystosci ?ilosc&:(< ?ilosc 20)))
=>
	(assert (decyzja (czynnosc ZAKUPY) ))
)

(defrule czy-gotowac-sniadanie
	(jaki-posilek (posilek sniadanie))
	(stanKuchni (iloscJedzenia ?ilosc&:( > ?ilosc 4)))
=>
	(assert (decyzja (czynnosc GOTOWANIE) (cel SNIADANIE)))
)

(defrule czy-gotowac-obiad
	(jaki-posilek (posilek obiad))
	(stanKuchni (iloscJedzenia ?ilosc&:( > ?ilosc 8)))
=>
	(assert (decyzja (czynnosc GOTOWANIE) (cel OBIAD)))
)


(defrule czy-gotowac-kolacje
	(jaki-posilek (posilek kolacja))
	(stanKuchni (iloscJedzenia ?ilosc&:( > ?ilosc 6)))
=>
	(assert (decyzja (czynnosc GOTOWANIE) (cel KOLACJA)))
)

